import { convert2Map, Convert2MapType as _Convert2MapType } from './convert-2-map'

export const Convert2MapType_Name = 'Convert2MapType'

export type Convert2MapType = _Convert2MapType

import { convert2Tree, Convert2TreeType as _Convert2TreeType } from './convert-2-tree'

export const Convert2TreeType_Name = 'Convert2TreeType'
export const Convert2TreeNodeType_Name = 'Convert2TreeNodeType'
export const Convert2TreeReturnTreeType_Name = 'Convert2TreeReturnTreeType'
export const Convert2TreeReturnMapType_Name = 'Convert2TreeReturnMapType'
export const Convert2TreeReturnType_Name = 'Convert2TreeReturnType'

export type Convert2TreeType = _Convert2TreeType
export type {
  Convert2TreeNodeType,
  Convert2TreeReturnTreeType,
  Convert2TreeReturnMapType,
  Convert2TreeReturnType
} from './convert-2-tree'

import { copyDeep, CopyDeepType } from './copy-deep'

export const CopyArrDeepType_Name = 'CopyArrDeepType'

export type CopyArrDeepType = CopyDeepType

import { count, CountType } from './count'

export const CountArrItemType_Name = 'CountArrItemType'

export type CountArrItemType = CountType

import { flattenTree, FlattenTreeType as _FlattenTreeType } from './flatten-tree'

export const FlattenTreeType_Name = 'FlattenTreeType'
export const FlattenTreeStrategyConst_Name = 'FlattenTreeStrategyConst'
export const FlattenTreeStrategyConstType_Name = 'FlattenTreeStrategyConstType'
export const FlattenTreeOptionsType_Name = 'FlattenTreeOptionsType'

export type FlattenTreeType = _FlattenTreeType
export { FlattenTreeStrategyConst } from './flatten-tree'
export type { FlattenTreeStrategyConstType, FlattenTreeOptionsType } from './flatten-tree'

import { getLast, GetLastType } from './get-last'

export const GetArrLastType_Name = 'GetArrLastType'

export type GetArrLastType = GetLastType

import { isArr, IsArrType as _IsArrType } from './is-arr'

export const IsArrType_Name = 'IsArrType'

export type IsArrType = _IsArrType

import { isEmpty, IsEmptyArrType as _IsEmptyArrType } from './is-empty'

export const IsEmptyArrType_Name = 'IsEmptyArrType'

export type IsEmptyArrType = _IsEmptyArrType

import { isIncludeIn, IsIncludeInArrType as _IsIncludeInArrType } from './is-include-in'

export const IsIncludeInArrType_Name = 'IsIncludeInArrType'

export type IsIncludeInArrType = _IsIncludeInArrType

import { repeat, RepeatArrType as _RepeatArrType } from './repeat'

export const RepeatArrType_Name = 'RepeatArrType'

export type RepeatArrType = _RepeatArrType

import { traverseDeep, TraverseDeepType as _TraverseDeepType } from './traverse-deep'

export const TraverseArrDeepType_Name = 'TraverseArrDeepType'

export type TraverseArrDeepType = _TraverseDeepType

export const ArrUtil_Name = 'ArrUtil'

export const ArrUtil: {
  convert2Map: Convert2MapType
  convert2Tree: Convert2TreeType
  copyDeep: CopyArrDeepType
  count: CountArrItemType
  flattenTree: FlattenTreeType
  getLast: GetArrLastType
  isArr: IsArrType
  isEmpty: IsEmptyArrType
  isIncludeIn: IsIncludeInArrType
  repeat: RepeatArrType
  traverseDeep: TraverseArrDeepType
} = {
  convert2Map,
  convert2Tree,
  copyDeep,
  count,
  flattenTree,
  getLast,
  isArr,
  isEmpty,
  isIncludeIn,
  repeat,
  traverseDeep
}
